package 栈;

/**
 * @author 翟晓龙
 * @date 2022/4/14
 */
public class 最长回文字符串 {

    public static void main(String[] args) {

        String res = maxLongStr("cabbak");

    }

    /**
     * 中心扩散法
     * @param input
     * @return
     */
    public static String maxLongStr(String input){

        if (input == null || input.length() < 3){
            return input;
        }
        String result = "";
        for (int i = 1;i<input.length()-1;i++){

            String tempMax = subMaxLongStr(input,i,i);
            String tempMax2 = subMaxLongStr(input,i,i+1);
            tempMax = tempMax.length() > tempMax2.length() ? tempMax : tempMax2;
            result = tempMax.length()> result.length()?tempMax:result;

        }
        return result;

    }

    public static String subMaxLongStr(String s,int l,int r){
        while (l>=0&&r<s.length()&&s.charAt(l) == s.charAt(r)){
            l -- ;
            r ++;
        }
        return s.substring(l + 1,r);
    }
}
